package com.atguigu.spring6.iocxml.dimap;

import java.util.List;
import java.util.Map;

/**
 * Student类代表一个学生，包含学生的基本信息以及他们的课程和教师映射
 * 它演示了如何在Spring框架中使用依赖注入（DI）来设置属性
 */
public class Student {
    // 映射教师的Map，键为字符串类型，值为Teacher对象
    private Map<String,Teacher> teacherMap;

    // 学生编号
    private String sid;

    // 学生姓名
    private String sname;

    // 课程列表，包含学生所选的课程
    private List<Lesson> lessonList;

    /**
     * 获取教师映射
     * @return 返回教师映射
     */
    public Map<String, Teacher> getTeacherMap() {
        return teacherMap;
    }

    /**
     * 设置教师映射
     * @param teacherMap 教师映射，键为教师名称，值为Teacher对象
     */
    public void setTeacherMap(Map<String, Teacher> teacherMap) {
        this.teacherMap = teacherMap;
    }

    /**
     * 获取课程列表
     * @return 返回课程列表
     */
    public List<Lesson> getLessonList() {
        return lessonList;
    }

    /**
     * 设置课程列表
     * @param lessonList 课程列表，包含学生所选的课程
     */
    public void setLessonList(List<Lesson> lessonList) {
        this.lessonList = lessonList;
    }

    /**
     * 打印学生信息，包括学生编号、姓名、教师映射和课程列表
     */
    public void run(){
        System.out.println("学生编号: "+sid+" 学生姓名："+sname);
        System.out.println(teacherMap);
        System.out.println(lessonList);
    }

    /**
     * 获取学生姓名
     * @return 返回学生姓名
     */
    public String getSname() {
        return sname;
    }

    /**
     * 设置学生姓名
     * @param sname 学生姓名
     */
    public void setSname(String sname) {
        this.sname = sname;
    }

    /**
     * 获取学生编号
     * @return 返回学生编号
     */
    public String getSid() {
        return sid;
    }

    /**
     * 设置学生编号
     * @param sid 学生编号
     */
    public void setSid(String sid) {
        this.sid = sid;
    }
}
